package flow

import org.springframework.http.HttpMethod

// 除 pre 方法外,其它的方法都可以
// 获取 net.sudot.flow.dsl.model.Context.properties 中的数据
// 获取 net.sudot.flow.dsl.model.Context 里的属性
// 因为在执行 pre 的时候, net.sudot.flow.dsl.model.Context.properties 还未初始化
pre {
    // 此方法可省略
    inputData.put("age2", inputData.age)
    return inputData
}
check {
    // 此方法可省略,检测失败抛出异常
    // name, age2, age 属性也会在 net.sudot.flow.dsl.model.Context.properties 中获取
    // assertEquals 方法由 net.sudot.flow.dsl.model.Context 继承自 org.junit.Assert
    assertEquals "姓名录入错误", "张三", name
    assertEquals "年龄不符", age, age2
}
result {
    [
            name: responseData.main.resName,
            age : responseData.main.resAge
    ]
}
after { result, exception ->
    println("after")
}

send("main") {
    host "groovy-dsl"
    path "/mock"
    method HttpMethod.POST

    request {
        [
                name: name,
                age : age,
                age1: age2,
        ]
    }
    response { data ->
        def body = data.body
        [
                resName: body.name,
                resAge : body.age + 1
        ]
    }
    fail { exception ->
        // 请求异常需要处理的结果
        println("fail")
    }
}